package com.cxc.news.service;

import com.cxc.news.pojo.News;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface NewsService {

    /**
     * 根据id查询博客
     * @param id
     * @return
     */
    public News getNews(Long id);

    /**
     * 分页查询博客列表
     * @param pageNum
     * @param pageSize
     * @param news
     * @return
     */
    public PageInfo<News> listNews(int pageNum, int pageSize, News news);

    /**
     * 保存博客
     * @param news
     * @return
     */
    public boolean saveNews(News news);

    /**
     * 更新博客
     * @param news
     * @return
     */
    public boolean updateNews(News news);

    /**
     * 删除博客
     * @param id
     */
    public void deleteNews(Long id);

    /**
     * 获取所有博客
     * @return
     */
    public List<News> getAllNews();

    /**
     * 根据条件分页查询博客
     * @param pageNum
     * @param pageSize
     * @param query
     * @return
     */
    public PageInfo<News> listNewsByStringQuery(int pageNum, int pageSize, String query);

    /**
     * 获取最新的size条博客
     * @param size
     * @return
     */
    public List<News> getNewNewsLismitSize(Integer size);

    /**
     * 获取博客数目
     * @return
     */
    public Integer getNewsNum();



    /**
     * 根据分类id获取博客列表
     * @param pageNum
     * @param pageSize
     * @param typeId
     * @return
     */
    public PageInfo<News> listNewsByTypeId(int pageNum, int pageSize, Long typeId);

    /**
     * 不分页根据分类id获取博客列表
     * @param typeId
     * @return
     */
    public List<News> listNewsByTypeIdNoPage(Long typeId);


    /**
     * 增加访问量
     */
    public void addViews(Long id);

    /**
     * 获取最热门的新闻
     * @param topNum
     * @return
     */
    public List<News> getTopViewsNews(Integer topNum);

    /**
     * 获取当前用户的新闻
     * @param userId
     * @return
     */
    public List<News> getNewsByUserId(Long userId);

    /**
     * 根据用户来分页获取新闻
     * @return
     */
    public PageInfo<News> listNewsByUserId(Integer pageNum,Integer pageSize,Long userId);
}
